fn main() {
    //rust语言是静态类型语言，也就是说编译时需要知道变量的数组类型
    //编译器具有自动推导的能力

    //bool
    let is_true:bool = true;
    println!("is_true = {}",is_true);
    let is_false:bool = false;
    println!("is_true = {},is_false = {}",is_true,is_false);

    //char 在rust里，char是32位的
    //c++里的char是8位的，放不了单个汉字
    let a:char = 'a';
    let surname:char = '吴';
    println!("a = {},姓 是 {}",a,surname);

    //数字类型
    //i8 i16 i32 i64 i128
    //u8 u16 u32 u64 u128
    let b:i8 = 100;
    let c:f32 = 3.1415926;
    println!("b = {},c = {}",b,c);

    //自适应类型isize、usize，和机器本身相关
    println!("max = {}",usize::max_value());

    //数组
    //let arr:[type;size] = [];size 也是数组定义的一部分
    let arr:[u8;5] = [1,2,3,4,5];
    let arr1:[u8;3] = [1,2,3];
    println!("arr[0] = {}",arr[0]);
    //只能传大小为3的数组，所以size 也是数组定义的一部分
    //c++ 传递的数组只是数组的指针
    arr_print(arr1);

    //元组
    let tup:(u32,f32,char) = (520,3.1415926,'吴');
    println!("---------元组完全定义----------");
    println!("{}",tup.0);
    println!("{}",tup.1);
    println!("{}",tup.2);
    let tup = (520,3.1415926,'吴');
    println!("---------元组简单定义----------");
    println!("{}",tup.0);
    println!("{}",tup.1);
    println!("{}",tup.2);
    //元组的拆解
    let (x,y,z) = tup;
    println!("---------元组拆解----------");
    println!("{}",x);
    println!("{}",y);
    println!("{}",z);

    println!("Hello, world!");
}

fn arr_print(arr:[u8;3]){
    println!("----------数组遍历------------");
    for i in &arr {
        println!("{}",i);
    }
}
